Composite Pattern컴포지트 패턴은 객체들의 집단에 대해 개별 인터페이스를 동일하게 가져가게 하기 위한 패턴이다.
사용자가 단일 개체와 복합개체를 동일하게 다루도록 한다.(객체를 트리 구조로 구성하여 부분-전체 계층 표현)
위와 같이 구현할 경우, 아래와 같은 문제점이 있다.
- 전체 합계를 계산할 때, 필드를 빠뜨리기 쉽다.
- 평균을 계산할 때, 상수값 3.0을 사용하며, 이는 필드의 개수가 바뀌었을 때 종속성을 야기한다.
- 최대 값을 구할 때 모든 필드 값 쌍마다 std::max()를 반복적으로 호출해야 함
다른 속성이 추가될 때마다, sum(), average(), max()가 리팩토링되어야 한다.
배열 기반 속성을 이용
위와 같이 구현시 배열을 순회함으로서, 속성에 대한 통계치를 쉽게 구할 수 있다.